﻿//using System;
//using System.Collections.Generic;
//using System.Data;
//using System.Linq.Expressions;

//namespace DBUtil.Builders
//{
//    /// <summary>
//    /// 更新构建器
//    /// </summary>
//    /// <typeparam name="T"></typeparam>
//    public interface IUpdateBuilder<T> where T : class, new()
//    {
//        /// <summary>
//        /// 表示一个Set语法
//        /// </summary>
//        /// <param name="expression"></param>
//        /// <returns></returns>
//        IUpdateBuilder<T> Set(Expression<Func<T, object>> expression);

//        /// <summary>
//        /// 表示一个Set语法,将指定属性对应的列值直接拼接到sql语句中
//        /// </summary>
//        /// <param name="expression"></param>
//        /// <returns></returns>
//        IUpdateBuilder<T> SetRaw(Expression<Func<T, object>> expression);

//        /// <summary>
//        /// 返回一个IWhereBuilder
//        /// </summary>
//        /// <returns></returns>
//        IWhereBuilder<T> Where();

//        /// <summary>
//        /// 返回一个IWhereBuilder
//        /// </summary>
//        /// <param name="expression"></param>
//        /// <returns></returns>
//        IWhereBuilder<T> Where(Expression<Predicate<T>> expression);

//        /// <summary>
//        /// 根据指定的过滤条件和参数返回一个IWhereBuilder
//        /// </summary>
//        /// <param name="filterSql"></param>
//        /// <param name="paras"></param>
//        /// <returns></returns>
//        IWhereBuilder<T> Where(string filterSql, params IDataParameter[] paras);

//        /// <summary>
//        /// 给当前表起别名,可将别名用在查询条件中
//        /// </summary>
//        /// <param name="alias"></param>
//        /// <returns></returns>
//        IUpdateBuilder<T> As(string alias = "t");

//        /// <summary>
//        /// 根据主键去更新
//        /// </summary>
//        /// <returns></returns>
//        IUpdateBuilder<T> WhereKey();

//        /// <summary>
//        /// 忽略指定的属性
//        /// </summary>
//        /// <param name="expression"></param>
//        /// <returns></returns>
//        IUpdateBuilder<T> Ignore(Expression<Func<T, object>> expression);

//        /// <summary>
//        /// 忽略所有的属性
//        /// </summary>
//        /// <returns></returns>
//        IUpdateBuilder<T> IgnoreAll();

//        /// <summary>
//        /// 设置更新的数据
//        /// </summary>
//        /// <param name="data"></param>
//        /// <returns></returns>
//        IUpdateBuilder<T> UseModelData(T data);

//        /// <summary>
//        /// 指定操作的表名
//        /// </summary>
//        /// <param name="tableName"></param>
//        /// <returns></returns>
//        IUpdateBuilder<T> UseTable(string tableName);

//        /// <summary>
//        /// 更新数据返回受影响的行数
//        /// </summary>
//        /// <returns></returns>
//        int Update();

//        /// <summary>
//        /// 更新数据后,根据查询构建器重新查询数据
//        /// </summary>
//        /// <param name="selectBuilder"></param>
//        /// <returns></returns>
//        T UpdateAndGetModel(ISelectBuilder<T> selectBuilder = null);

//        /// <summary>
//        /// 更新数据后,根据查询构建器重新查询数据集合
//        /// </summary>
//        /// <param name="selectBuilder"></param>
//        /// <returns></returns>
//        List<T> UpdateAndGetModels(ISelectBuilder<T> selectBuilder = null);
//    }
//}
